
package bd;
import classes.*;
import java.util.*;
import java.sql.*;
import javax.swing.JOptionPane;


public class EstadoBD {

    public static boolean salvar(Estado estado, Usuario usuarioLogado){
        try{
            Connection conexao = Conexao.abrir();
            CallableStatement procedure = conexao.prepareCall("{call AT_ESTADO(?,?,NULL,?,?)}");
            procedure.setString(1, estado.getDescr());
            procedure.setString(2, estado.getSigla());
            //procedure.setInt(3, (Integer)null);
            procedure.setInt(3, usuarioLogado.getId());
            procedure.setString(4,"IN");
            procedure.execute();
            procedure.close();
            conexao.close();

            return true;

        }catch(Exception excecao){
            return false;
        }

    }

    public static boolean alterar(Estado estado, Usuario usuarioLogado){
        try{
            Connection conexao = Conexao.abrir();
            CallableStatement procedure = conexao.prepareCall("{call AT_ESTADO(?,?,?,NULL,?)}");
            procedure.setString(1, estado.getDescr());
            procedure.setString(2, estado.getSigla());
            procedure.setInt(3, usuarioLogado.getId());
            //procedure.setInt(4,(Integer)null);
            procedure.setString(4,"AL");
            procedure.execute();
            procedure.close();
            conexao.close();

            return true;

        }catch(Exception excecao){
            return false;
        }

    }

    public static boolean deletar(String sigla){
        try{
            Connection conexao = Conexao.abrir();
            CallableStatement procedure = conexao.prepareCall("{call AT_ESTADO(NULL,?,NULL,NULL,?)}");
            //procedure.setString(1, null);
            procedure.setString(1, sigla);
            //procedure.setInt(3, (Integer)null);
            //procedure.setInt(4, (Integer)null);
            procedure.setString(2,"");
            procedure.execute();
            procedure.close();
            conexao.close();

            return true;
        }catch(Exception excecao){
            return false;
        }
    }

    public static ArrayList<Estado> pesquisar(String estado){
        ArrayList<Estado> vetEstados = new ArrayList<Estado>();
        try{
            Connection conexao = Conexao.abrir();
            Statement comandoSelect = conexao.createStatement();
            ResultSet resultado = comandoSelect.executeQuery("select * from VIEW_SELECIONAESTADO where est_descr='"+estado+"'");
            while(resultado.next())
            {
                Estado novoEstado = new Estado();
                novoEstado.setDescr(resultado.getString("est_descr"));
                JOptionPane.showMessageDialog(null, resultado.getString("est_descr"));
                novoEstado.setSigla(resultado.getString("est_sigla"));
                JOptionPane.showMessageDialog(null, resultado.getString("est_sigla"));
                vetEstados.add(novoEstado);
            }
            conexao.close();
            return vetEstados;
        }catch(Exception excecao){
            return null;
        }
    }

    public static Estado selecionar(String sigla){
        Estado retorno;
        try{
            Connection conexao = Conexao.abrir();
            Statement comandoSelect = conexao.createStatement();
            ResultSet resultado = comandoSelect.executeQuery("select * from VIEW_SELECIONAESTADO where est_sigla="+sigla+"");
            if(resultado.next())
            {
                Estado novoEstado = new Estado();
                novoEstado.setDescr(resultado.getString("est_descr"));
                novoEstado.setSigla(sigla);

                retorno=novoEstado;
            }else{
                retorno=null;
            }
            conexao.close();
            return retorno;
        }catch(Exception excecao){
            return null;
        }
    }

    public static ArrayList<Estado> selecionar(){
        ArrayList<Estado> vetEstados = new ArrayList<Estado>();
        try{
            Connection conexao = Conexao.abrir();
            Statement comandoSelect = conexao.createStatement();
            ResultSet resultado = comandoSelect.executeQuery("select * from VIEW_SELECIONAESTADO");
            while(resultado.next())
            {
                Estado novoEstado = new Estado();
                novoEstado.setDescr(resultado.getString("est_descr"));
                novoEstado.setSigla(resultado.getString("est_sigla"));
                vetEstados.add(novoEstado);
            }
            conexao.close();
            return vetEstados;
        }catch(Exception excecao){
            return null;
        }
    }
}
